#!/bin/bash

# 脚本名称：test_dd_bs.sh

# 功能说明：
# 本脚本用于确定 dd 命令的最佳块大小。
# 主要流程包括：
# 1. 创建一个约 1GB 的测试文件。
# 2. 使用不同的块大小进行读写测试。
# 3. 记录每次测试的时间。
# 4. 输出测试结果。
# 5. 清理测试文件。

# 注意事项：
# - 需要足够的磁盘空间来创建测试文件。
# - 测试过程中会对磁盘进行大量读写操作，请确保不会影响其他重要操作。

# 创建测试文件（约 1GB）
dd if=/dev/zero of=/var/tmp/infile bs=1M count=100 status=progress

# 进行测试
for bs in 1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 8M
do
  echo "---------------------------------------"
  echo "Testing block size = $bs"
  
  # 记录开始时间
  start=$(date +%s.%N)
  
  # 进行读写测试，并使用 `status=none` 隐藏 `dd` 进度信息
  dd if=/var/tmp/infile of=/var/tmp/outfile bs=$bs count=1000 status=none

  # 确保写入磁盘
  sync

  # 记录结束时间
  end=$(date +%s.%N)

  # 计算时间差
  elapsed=$(echo "$end - $start" | bc)
  echo "Time taken: $elapsed seconds"
  echo ""
done

# 清理测试文件
rm -f /var/tmp/infile /var/tmp/outfile

